/*

Object.setPrototypeOf方法的作用与__proto__相同，用来设置一个对象的原型对象（prototype），返回参数对象本身。
它是 ES6 正式推荐的设置原型对象的方法。

*/

//格式
Object.setPrototypeOf(object, prototype)

//使用
const o = Object.setPrototypeOf({}, null);

//该方法等同于下面的函数。
function setPrototypeOf(obj, proto) {
	obj.__proto__ = proto;
	return obj;
}


//实例
let proto = {};
let obj = {
	x: 10
};
Object.setPrototypeOf(obj, proto);

proto.y = 20;
proto.z = 40;

obj.x // 10
obj.y // 20 obj没有去找原型
obj.z // 40 obj没有去找原型


//由于undefined和null无法转为对象，所以如果第一个参数是undefined或null，就会报错。
Object.setPrototypeOf(undefined, {})
// TypeError: Object.setPrototypeOf called on null or undefined
Object.setPrototypeOf(null, {})
// TypeError: Object.setPrototypeOf called on null or undefined
